/**
 * 部门:管理 - 查看所有角色
 * Created by mhy on 2017/1/9.
 */
var selectCount = 0;    //全选记录次数
$(document).ready(function() {

    // 显示角色列表
    displayRoleList();

    //添加角色按钮
    $("button.btn-success").eq(0).click(function () {
        toDepartmentAddRole();
    });
    //删除选定按钮
    $("button.btn-danger").eq(0).click(function () {
        deleteRoleGroupInfo();
    });

    //全选按钮
    $("#check-all").click(function () {
        checkAll(this,$('#datatable-checkbox'));
    })
});


//初始化表格 默认无选中
function initTable(data){
    var $datatable = $('#datatable-checkbox');

    $datatable.dataTable( {
        data:data,
        columns:[
            {
                "render": function () {
                    return '<input type="checkbox" class="flat"  name="table_records"/>';
                },
            },
            { "sTitle": "ID" },
            { "sTitle": "角色名" },
            { "sTitle": "权限" },
            { "sTitle": "操作" },

        ],
        order:[
            [1, "asc"]
        ],
        columnDefs: [
            { orderable: false, targets: [0] },
        ],
    } );
}

//初始化表格 默认全选
function initTableAllChecked(data){
    var $datatable = $('#datatable-checkbox');

    $datatable.dataTable( {
        data:data,
        columns:[
            {
                "render": function () {
                    return '<input type="checkbox" class="flat"  name="table_records" checked/>';
                },
            },
            { "sTitle": "ID" },
            { "sTitle": "角色名" },
            { "sTitle": "权限" },
            { "sTitle": "操作" },

        ],
        order:[
            [1, "asc"]
        ],
        columnDefs: [
            { orderable: false, targets: [0] },
        ],
    } );
}

/* 编辑角色按钮 跳转到编辑角色*/
function editRole(e){
    var roleId = $(e).parents("tr").children("td").eq(1).text();
    var url = "department_role_edit.html?roleId=" + roleId;

    window.location.href = url;
}

/* 删除角色按钮 弹出删除角色提示框*/
function deleteRoleInfo(e){
    var $modal = $(".bs-example-modal-dr");
    var name = $(e).parents("tr").children('td').eq(2).text();
    var roleId = $(e).parents("tr").children('td').eq(1).text();

    $("h4",$modal).eq(1).text("删除角色:"+ name);       //设置标题名称
    $(".btn-primary",$modal).attr("onclick","deleteRole("+roleId+");");  //设置确定按钮
}

//删除角色
function deleteRole(roleId) {
    var $modal = $(".bs-example-modal-dr");
    var $prompt = $("h4",$modal).eq(1); //提示
    var $closeButton = $("button",$modal).eq(1);        //弹出框关闭按钮
    var $ensureButton = $("button",$modal).eq(2);       //弹出框确定按钮

    $ensureButton.attr("disabled","disabled"); //设置编辑确定按钮暂时不可用
    $.ajax({
        type:'DELETE',//请求类型
        url:'../department/manage/role/' + roleId,//请求地址
        contentType: 'application/json;',//发送信息至服务器时内容编码类型
        data:JSON.stringify({
                            "opt":"delete"
        }),
        dataType:'JSON',/*预期服务器返回的数据类型*/
        success:function (json) {//成功获取到后台返回的值后，对后台返回的值做相应的一系列操作
            if(json.result){
                //操作成功提示
                promptInformation($prompt,"success","删除成功，即将跳转");
                //刷新
                setTimeout(function(){
                    $closeButton.trigger("click");  //关闭弹出框
                    //刷新列表
                    clearTables($('#datatable-checkbox'));
                    displayRoleList();
                    $prompt.text("");   //清空提示信息
                    $ensureButton.removeAttr("disabled"); //设置编辑确定按钮可用
                }, 1000);
            }else{
                //操作失败提示
                $ensureButton.removeAttr("disabled"); //设置编辑确定按钮可用
                promptInformation($prompt,"error",json.err_msg);
            }
        },
        error: function(XMLHttpRequest, textStatus, errorThrown) {
        },
        fail:function () { //如果在传输过程失败了：调用fail中对应的匿名函数(可选)
        },
        cache:true,
    });
}

//删除选定弹出框
function deleteRoleGroupInfo() {
    $(".btn-primary",".bs-example-modal-drg").attr("onclick","deleteRoleGroup();");  //设置确定按钮
}
//删除多个角色
function deleteRoleGroup() {
    var roleArr = new Array();
    var $checkboxes = $("input[type='checkbox']");
    var roleId;
    var $modal = $(".bs-example-modal-drg");
    var $prompt = $("h4",$modal).eq(1);
    var $closeButton = $("button",$modal).eq(1);        //弹出框关闭按钮
    var $ensureButton = $("button",$modal).eq(2);       //弹出框确定按钮

    $ensureButton.attr("disabled","disabled"); //设置编辑确定按钮暂时不可用

    for(var i = 1;i < $checkboxes.length;i++){
        if($checkboxes.eq(i).is(':checked')){
            roleId = $checkboxes.eq(i).parents("tr").children("td").eq(1).text();
            roleArr.push(roleId);
        }
    }   //end for

    if(roleArr.length == 0){     //如果没有选定
        $ensureButton.removeAttr("disabled"); //设置编辑确定按钮可用
        $closeButton.trigger("click");  //关闭弹出框
        createPNotify("提示","info","请选择要删除的角色");

        return;
    }

    promptInformation($prompt,"success","正在删除");
    for(var i = 0;i < roleArr.length; i++){

        $.ajax({
            type:'DELETE',//请求类型
            url:'../department/manage/role/' + roleArr[i],//请求地址
            contentType: 'application/json;',//发送信息至服务器时内容编码类型
            data:JSON.stringify({
                "opt":"delete"
            }),
            dataType:'JSON',/*预期服务器返回的数据类型*/
            success:function (json) {//成功获取到后台返回的值后，对后台返回的值做相应的一系列操作

            },
            cache:true,
        });
    }   //end for

    setTimeout(function () {    //刷新页面
        $closeButton.trigger("click");  //关闭弹出框
        //刷新列表
        clearTables($('#datatable-checkbox'));
        displayRoleList();
        $prompt.text("确定删除选定的？");   //清空提示信息
        $ensureButton.removeAttr("disabled"); //设置编辑确定按钮可用
    },parseInt(1000 * roleArr.length + 500));
}

/* 获得指定角色的权限 */
function getRolePowers(event,roleId){
    event = event ? event : window.event;

    var obj = event.srcElement ? event.srcElement : event.target;
    var $obj = $(obj);

    /*获得指定角色信息*/
    /* Ajax:
     * 功能:查看指定角色
     * */
    $.ajax({
        type:'GET',//请求类型
        url:'../department/manage/role/' + roleId,//请求地址
        contentType: 'application/json;',//发送信息至服务器时内容编码类型
        dataType:'JSON',/*预期服务器返回的数据类型*/
        success:function (json) {//成功获取到后台返回的值后，对后台返回的值做相应的一系列操作
            var powers = json.data.powers;
            var $powerList = $obj.siblings("ul");
            var $liObj;

            $powerList.empty();

            for(var i = 0;i < count(powers);i++){
                $liObj = $("<li></li>");
                $liObj.text(powers[i].type  +" "+ powers[i].name);

                $powerList.append($liObj);
            }   //end for

        },
        error: function(XMLHttpRequest, textStatus, errorThrown) {
        },
        fail:function () { //如果在传输过程失败了：调用fail中对应的匿名函数(可选)
        },
        cache:true,
    });
}   //end getRolePowers

/* 获得指定角色发文范围 */
function getRoleScopes(event,roleId) {
    event = event ? event : window.event;

    var obj = event.srcElement ? event.srcElement : event.target;
    var $obj = $(obj);

    /*获得指定角色信息*/
    /* Ajax:
     * 功能:查看指定角色
     * */
    $.ajax({
        type:'GET',//请求类型
        url:'../department/manage/role/' + roleId,//请求地址
        contentType: 'application/json;',//发送信息至服务器时内容编码类型
        dataType:'JSON',/*预期服务器返回的数据类型*/
        success:function (json) {//成功获取到后台返回的值后，对后台返回的值做相应的一系列操作
            var scopes = json.data.send_doc_target_scope;
            var $scopeList = $obj.siblings("ul");
            var $liObj;

            $scopeList.empty();

            for(var i = 0;i < count(scopes);i++){
                $liObj = $("<li></li>");
                $liObj.text(scopes[i].id  +" "+ scopes[i].name);

                $scopeList.append($liObj);
            }   //end for

        },
        error: function(XMLHttpRequest, textStatus, errorThrown) {
        },
        fail:function () { //如果在传输过程失败了：调用fail中对应的匿名函数(可选)
        },
        cache:true,
    });
}   //end getRoleScopes

/*函数:显示角色列表 默认无选中*/
function displayRoleList(){
    $.ajax({
        type:'GET',//请求类型
        url:'../department/manage/role/all',//请求地址
        contentType: 'application/json;',//发送信息至服务器时内容编码类型
        dataType:'JSON',/*预期服务器返回的数据类型*/
        success:function (json) {//成功获取到后台返回的值后，对后台返回的值做相应的一系列操作
            var roles = json.data.roles;
            var datas = new Array();
            var arr = new Array();
            var a = new Array();
            var $powerList;

            for(var i = 0; i < count(roles); i++){
                arr = [];
                arr[1] = roles[i].id;
                arr[2] = roles[i].name;

                //查看权限
                $powerList = $("div.dropdown").clone();
                $powerList.children("a").text("查看权限");
                $powerList.children("a").attr("onclick","getRolePowers(event," + roles[i].id +")");

                arr[3] = $powerList.html();

                a = [];
                a[0] = "<a href='#' class='btn btn-info btn-xs' onclick='editRole(this)'><i class='fa fa-pencil'></i> 编辑 </a>";
                a[1] ="<a href='#' class='btn btn-danger btn-xs' data-toggle='modal' data-target='.bs-example-modal-dr' onclick='deleteRoleInfo(this)'><i class='fa fa-pencil'></i> 删除 </a>";

                arr[4] = a.join(" ");
                datas[i] = arr;
            }
            initTable(datas);
        },
        error: function(XMLHttpRequest, textStatus, errorThrown) {
        },
        fail:function () { //如果在传输过程失败了：调用fail中对应的匿名函数(可选)
        },
        cache:true,
    });
}

/*函数:显示角色列表 默认全选*/
function displayRoleListAllChecked(){
    $.ajax({
        type:'GET',//请求类型
        url:'../department/manage/role/all',//请求地址
        contentType: 'application/json;',//发送信息至服务器时内容编码类型
        dataType:'JSON',/*预期服务器返回的数据类型*/
        success:function (json) {//成功获取到后台返回的值后，对后台返回的值做相应的一系列操作
            var roles = json.data.roles;
            var datas = new Array();
            var arr = new Array();
            var a = new Array();
            var $powerList;

            for(var i = 0; i < count(roles); i++){
                arr = [];
                arr[1] = roles[i].id;
                arr[2] = roles[i].name;

                //查看权限
                $powerList = $("div.dropdown").clone();
                $powerList.children("a").text("查看权限");
                $powerList.children("a").attr("onclick","getRolePowers(event," + roles[i].id +")");

                arr[3] = $powerList.html();

                a = [];
                a[0] = "<a href='#' class='btn btn-info btn-xs' onclick='editRole(this)'><i class='fa fa-pencil'></i> 编辑 </a>";
                a[1] ="<a href='#' class='btn btn-danger btn-xs' data-toggle='modal' data-target='.bs-example-modal-dr' onclick='deleteRoleInfo(this)'><i class='fa fa-pencil'></i> 删除 </a>";

                arr[4] = a.join(" ");
                datas[i] = arr;
            }
            initTableAllChecked(datas);
        },
        error: function(XMLHttpRequest, textStatus, errorThrown) {
        },
        fail:function () { //如果在传输过程失败了：调用fail中对应的匿名函数(可选)
        },
        cache:true,
    });
}
